

//
//  HomeController.swift
//  Mircoblog-swift
//
//  Created by zz on 16/2/23.
//  Copyright © 2016年 zz. All rights reserved.
//

import UIKit
/// 微博 Cell 可重用标识符号
private let CZStatusCellID = "CZStatusCellID"

class HomeController: RootViewController {

    override func viewDidLoad() {
        //放在 super.viewDidLoad() 之前
        setRefresh()

        super.viewDidLoad()

        tableView?.dataSource = self
        tableView?.registerClass(UITableViewCell.self, forCellReuseIdentifier: CZStatusCellID)
        // 设置访客视图信息 - 如果用登录成功，访客视图为 nil，什么也不做！
        visitorView?.setupInfo(message: "关注一些人，回这里看看有什么惊喜")
        
        //刷新
//        setRefresh()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // On iOS 6.0 it will no longer clear the view by default.
        // 在 iOS 6.0 之后，默认不再清除 view，再 iOS 6.0 之前，收到内存警告后
        // `如果视图当前没有显示`，会被从内存中销毁，下次需要使用的时候，会再次调用 loadView 创建 view
        // 只需要释放能够被再次创建的资源，例如：从网络加载的数据数组
        // 图像的内存管理 SDWebImage 自行管理，会释放内存中的图像，下次使用，会重新从磁盘缓存加载，如果瓷盘缓存没有，下载图片
        
        print("Home 的 window \(self.view.window)")
        // 如果视图当前正在显示，window 不为nil
        // 注意：Swift 中 lazy 的属性 ** 千万不要设置成 nil！！！
        if self.view.window == nil {
            
            dataList = []
            print(dataList)
            loadData()
        }
    }

    override func loadData() {
        
        // 默认起始索引值
        let defaultIndex = 100
        
        // 1. 判断是否是上拉刷新，如果上拉刷新动画启动，认为是上拉刷新
        let isPullup = refreshControl.isPullupRefresh
        
        // 显示刷新控件
        refreshControl.beginRefreshing()

        dispatch_async(dispatch_get_global_queue(0, 0)) {
            // 模拟网络延时！ － sleepForTimeInterval，同步的，不执行完成，不会执行后续代码
            // 阻塞线程／当前线程在睡眠期间，不响应任何事件！
            // 提示：商业应用程序千万不要使用！
            NSThread.sleepForTimeInterval(1.0)
            
            // 下拉刷新索引，获取数组的第 0 条数据数值
            let pulldownIndex = self.dataList.first ?? defaultIndex
            
            // 上拉刷新索引，获取数组的最后一条记录数值
            let pullupIndex = self.dataList.last ?? 0
            
            // 如果上拉，顺序加载数据，如果下拉，倒序
            // 提示：以下的 if 是由网络请求返回的
            var arrayM = [Int]()
            if isPullup {
                for i in 0..<10 {
                    arrayM.append(pullupIndex - i - 1)
                }
            } else {
                // 模拟网络一次加载的数据
                for i in (0..<10).reverse() {
                    arrayM.append(i + pulldownIndex + 1)
                }
            }
            
            // 上拉刷新，将数据追加到数组末尾
            if isPullup {
                self.dataList += arrayM
            } else {
                // 下拉刷新要插入到现有的 dataList 的前面
                self.dataList = arrayM + self.dataList
            }

            dispatch_async(dispatch_get_main_queue(), {
                
             
                // 关闭刷新
                self.refreshControl.endRefreshing()
                
                // 刷新数据
                
                self.tableView!.reloadData()
  
                
            })
            
        }
       
    }
    //MARK: - 私有属性
    private var dataList :[Int] = [Int]()
}
//MARK: - tableViewDataSource
extension HomeController{

     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataList.count ?? 0
    }
     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(CZStatusCellID, forIndexPath: indexPath)
        //description将格式转化成字符串
        cell.textLabel?.text = dataList[indexPath.row].description
        
        return cell
    }
}
